/*
 * spi.h
 *
 *  Created on: 9 janv. 2010
 *      Author: Oliv
 */

#ifndef SPI_H_
#define SPI_H_

/*********************************************************
 * Macro definition
 ********************************************************/
#define SPI_CS_LOW()      (PORTE &= ~1)
#define SPI_CS_HIGH()     (PORTE |= 1)
#define	FCLK_SLOW()					/* Set slow clock (100k-400k) */
#define	FCLK_FAST()					/* Set fast clock (depends on the CSD) */

#define CMD0    (0x40+0)    /* GO_IDLE_STATE */
#define CMD1    (0x40+1)    /* SEND_OP_COND (MMC) */
#define ACMD41  (0xC0+41)   /* SEND_OP_COND (SDC) */
#define CMD8    (0x40+8)    /* SEND_IF_COND */
#define CMD9    (0x40+9)    /* SEND_CSD */
#define CMD10   (0x40+10)   /* SEND_CID */
#define CMD12   (0x40+12)   /* STOP_TRANSMISSION */
#define ACMD13  (0xC0+13)   /* SD_STATUS (SDC) */
#define CMD16   (0x40+16)   /* SET_BLOCKLEN */
#define CMD17   (0x40+17)   /* READ_SINGLE_BLOCK */
#define CMD18   (0x40+18)   /* READ_MULTIPLE_BLOCK */
#define CMD23   (0x40+23)   /* SET_BLOCK_COUNT (MMC) */
#define ACMD23  (0xC0+23)   /* SET_WR_BLK_ERASE_COUNT (SDC) */
#define CMD24   (0x40+24)   /* WRITE_BLOCK */
#define CMD25   (0x40+25)   /* WRITE_MULTIPLE_BLOCK */
#define CMD55   (0x40+55)   /* APP_CMD */
#define CMD58   (0x40+58)   /* READ_OCR */

/*********************************************************
 * Types definition
 ********************************************************/

/*********************************************************
 * Prototypes
 ********************************************************/
void spiInit();
U08 spiReadByte();
void spiWriteByte(U08 data);
U08 spiSendCmd(U08 u08Cmd, U32 u32Arg);

#endif /* SPI_H_ */
